草庐IT

CountDownLatch和ExecutorService 线程池cachedThreadPool.submit

全部标签

java - 在运行时,如何限制java线程的数量

我正在运行一个基因组组装程序*Trinity,http://trinityrnaseq.sourceforge.net/,如果有兴趣)在XSEDE资源之一上。硬件将线程数限制为2500,程序总是想超过这个数……有没有一种简单的方法可以限制执行的线程数?我试过-XX:ParallelGCThreads=16,但这似乎引入了新的错误。那么,有没有运行时命令来限制线程总数?? 最佳答案 使用Executor或ExecutorService。执行吹牛小子的建议,但它内置于Java中。 关于jav

java - 如何确定 Java 线程在哪个核心上运行?

我想实现一个CoreLocal映射,它的工作方式与ThreadLocal类似,只是它返回一个特定于当前线程运行的内核的值。这样做的原因是我想编写将从队列中获取作业的代码,但我想优先考虑那些相关数据已经与选择作业的线程位于同一L1缓存中的作业从队列中。因此,我希望每个核心都有一个队列,而不是整个程序有一个作业队列,只有当队列为空时,工作线程才会去查看其他核心的队列。 最佳答案 我不认为有任何调用来获取当前在JDK中公开的当前CPU,尽管它肯定是previouslydiscussed1和proposedasaJDKenhancement

java - 多线程中的多个选择器

在n个线程之间分配传入连接是否有益,每个线程都有自己独立的NIOSelector,其中n是服务器中的核心数?假设我正在编写一个服务器,它应该处理许多客户端连接。我可以有类似的东西:selector.select();Iteratori=selector.selectedKeys().iterator();while(i.hasNext()){SelectionKeykey=i.next();i.remove();if(!key.isValid())continue;if(key.isAcceptable()){//getoneofthenselectors(I'dhaveoneperc

java - 用Java设计多线程矩阵

我有一个实现JohnConway生命模拟器的矩阵,其中每个单元格代表生命或缺乏生命。每个生命周期都遵循以下规则:任何少于两个活邻居的活细胞都会死亡,好像是由人口不足引起的。任何有两个或三个活邻居的活细胞都会存活到下一代。任何有超过三个活邻居的活细胞都会死亡,就像过度拥挤一样。任何死细胞只要有三个活的邻居就会变成活细胞,就像通过繁殖一样。每个单元格都有一个线程,它将按照上面列出的规则执行更改。我已经实现了这些类:importjava.util.Random;publicclassLifeMatrix{Cell[][]mat;publicActioncurrentAction=Action

Java:为线程池中的线程设置超时

我想为在线程池中执行的线程设置超时。目前我有以下代码:ExecutorServiceexecutor=Executors.newFixedThreadPool(8);for(Listl:partition){Runnableworker=newWorkerThread(l);executor.execute(worker);}executor.shutdown();while(!executor.isTerminated()){}代码只是将一个大的对象列表拆分为子列表,并在单个线程中处理这些子列表。但这不是重点。我想给线程池中的每个线程一个超时时间。对于池中只有一个线程,我找到了以下解

java - 僵尸线程正在吞噬我的大脑(J2EE、Tomcat、Hibernate、Quartz)

毕竟是万圣节。这就是问题所在:我正在使用Quartz维护一些老式的J2EE代码,其中线程用完了。jconsole告诉我,当它变成梨形时,只有不到60K个线程,其中大约100个(!!)实际上正在运行。直觉和一些谷歌搜索(另见here)表明正在发生的事情(我打赌Quartz)正在创建永远不会被清理的非托管线程。几个子问题:是否有我可以轻松使用的工具来跟踪线程创建,因此我可以确定问题真的出在Quartz上?我发现的关于类似问题的大部分内容都引用了Weblogic;这是Tomcat的错误线索吗?有没有人有已知的解决方案?我已经有好几年没接触J2EE了,所以如果这是可以简单解决的问题,我不会太惊

java - 如何在 Java 中创建线程安全的一次写入多次读取值?

这是我在处理更复杂的系统时经常遇到的问题,而且我一直没有找到解决的好方法。它通常涉及共享对象主题的变体,其构造和初始化必然是两个不同的步骤。这一般是因为架构要求,类似于小程序,所以建议我合并构建和初始化的答案没有用。系统必须最晚以Java4为目标,因此建议仅在更高版本的JVM中提供支持的答案也没有用。举例来说,假设我有一个类,其结构适合这样的应用程序框架:publicclassMyClass{private/*ideally-final*/SomeObjectsomeObject;MyClass(){someObject=null;}publicvoidstartup(){someOb

java - 高级多线程 - Java

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭11年前。我没有遇到过需要大量多线程经验的工作。所以我想知道是否有人知道网站(开源项目),我可以在其中查看一些负责处理线程池解决死锁的重型代码的真实示例情况下,使用非阻塞算法、可重入锁、join-fork、futures-callables你明白了。更具体地说,我正在寻找J2EE和MOM集成以及它们之间使用的消息传递。

java - 从经典的多线程到java.nio异步/非阻塞服务器

我是在线游戏的主要开发商。玩家使用特定的客户端软件,该客户端软件通过TCP/IP(TCP,而不是UDP)连接到游戏服务器目前,服务器的体系结构是一个经典的多线程服务器,每个连接只有一个线程。但是在高峰时段,通常有300或400个连接的人,服务器变得越来越迟钝。我想知道,是否通过切换到具有管理多个连接的少量线程的java.nio。*异步I/O模型,性能是否会更好。在网络上查找涵盖此类服务器体系结构基础知识的示例代码非常容易。但是,经过数小时的谷歌搜索,我没有找到一些更高级的问题的答案:1-该协议(protocol)是基于文本的,而不是基于二进制的。客户端和服务器交换以UTF-8编码的文本

java - ReentrantLock.Sync 中当前线程变量的搭载是如何工作的?

我在“JavaConcurrencyinPractice”14.6.1节中阅读了ReentrantLock的一些实现细节,注释中的某些内容让我感到困惑:Becausetheprotectedstate-manipulationmethodshavethememorysemanticsofavolatilereadorwriteandReentrantLockiscarefultoreadtheownerfieldonlyaftercallinggetStateandwriteitonlybeforecallingsetState,ReentrantLockcanpiggybackont